home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ASME's Mechanical Engine…ing Toolkit 1997 December
/
ASME's Mechanical Engineering Toolkit 1997 December.iso
/
basic
/
bullet.bas
< prev
next >
Wrap
BASIC Source File
|
1988-06-27
|
8KB
|
161 lines
5 CLS
10 REM ballistics program
15 PRINT"Ballistics Program"
20 PRINT
25 PRINT "Velocity increase per additional inch in barrel length is:
30 PRINT "10 fps in the 2000-2500 fps range, 20 fps in the 2500-3000 fps range,
35 PRINT "30 fps in the 3000-3500 fps range, & 40 fps in the 3500-4000 fps range.
40 PRINT
50 DIM V1(22),S1(22),A1(22,7)
60 FOR I=1 TO 22:READ V1(I):NEXT I
70 FOR I=1 TO 22:READ S1(I):NEXT I
80 FOR I=1 TO 22
90 FOR J=1 TO 7
100 READ A1(I,J)
110 NEXT J
120 NEXT I
130 REM
140 INPUT "Identify Cartridge and/or bullet";C$:PRINT
150 INPUT "Ballistic coefficient (C1)";C1
160 INPUT "Standard conditions? (y or n)";M$
170 IF M$="y" OR M$="Y" THEN RO=1:AL=0:TF=59:GOTO 220
180 IF M$<>"n" AND M$<>"N" THEN 160
190 INPUT "Altitude at gun (ft)";AL
200 INPUT "Temperature (deg f)";TF
210 AF=1-AL*3.59596E-05 + (AL^2)*4.7741E-10:RF=518.67/(459.67+TF):RO=AF*RF
220 INPUT "Bullet weight (grains)";G
230 INPUT "Height of sight above bore (inches)";H
240 INPUT "Muzzle velocity (fps)";V:PRINT:PRINT
250 IF V>=300 AND V<=4500 THEN 280
260 PRINT "Velocity is out of range of program. Use tables ";
270 PRINT "or select a velocity between 300 and 4500 fps.";GOTO 240:PRINT:PRINT
280 FOR I=1 TO 22
290 I1=I
300 IF V<V1(I) THEN 320
310 NEXT I
320 IF Q3=2 THEN 340
330 X=0
340 DV=V-A1(I1,1)
350 SV=A1(I1,2)+A1(I1,3)*DV+A1(I1,4)*DV^2
360 TV=A1(I1,5)+A1(I1,6)*DV+A1(I1,7)*DV^2
370 SU=SV+X/(C1/RO)
380 IF SU<=43041! THEN 410
390 PRINT "Velocity is out of range of program. Use tables or choose";
400 PRINT "higher muzzle velocity or shorter range.":GOTO 240
410 FOR I=1 TO 22
420 I1=I
430 IF SU>S1(I) THEN 450
440 NEXT I
450 U=A1(I1,1)+(-A1(I1,3)-SQR(A1(I1,3)^2-4*A1(I1,4)*(A1(I1,2)-SU)))/(2*A1(I1,4))
460 EN=U^2*G/450400!
470 F=14.0069+6.59285*((U/V)-.65)-1.94051*((U/V)-.65)^2
480 TU=A1(I1,5)+A1(I1,6)*(U-A1(I1,1))+A1(I1,7)*(U-A1(I1,1))^2
490 T=(C1/RO)*(TU-TV)
500 D=12*F*T^2
510 YM=12*4.05*T^2
520 DF=176*(T-X/V)
530 IF X=0 THEN E=H:GOTO 560
540 E=(D+H)/(X/300)
550 IF Q4=2 THEN E2=E:GOTO 1080
560 IF Q1=2 AND Q3=1 THEN E2=E:GOTO 1190
570 HM=YM-.4*H
580 IF HM<0 THEN HM=0
590 IF X=0 THEN T=0:D=0:YM=0:HM=-H
600 REM
610 REM
620 IF Q1=2 THEN 670
630 Q1=2
640 REM this section deleted
650 INPUT "Enter the zero range (yards)";R:X=3*R:PRINT
660 GOTO 370
670 GOSUB 1280
680 PRINT"Muzzle velocity (fps):"TAB(33)V
690 PRINT "Range (yards):";TAB(33)R
700 PRINT "Remaining velocity (fps):";TAB(33)INT(U+.49)
710 PRINT "Remaining energy (ft-lbs):";TAB(33)INT(EN+.49)
720 PRINT "Time of flight (sec):";TAB(33)INT (1000*T+.49)/1000
730 PRINT "Total drop (inches):";TAB(33)INT(10*D+.49)/10
740 PRINT "Max ht above sight line (in):";TAB(33)INT(10*HM+.49)/10
750 PRINT "Elevation required (moa):";TAB(33)INT(10*E+.49)/10
760 PRINT "Defl. 10 mph crosswind (inches):";TAB(33)INT(10*DF+.49)/10:PRINT
770 INPUT "Do you want hard copy? (y or n)";B$
780 IF B$="n" OR B$="N" THEN 900
790 GOSUB 1250
800 LPRINT "Muzzle velocity (fps):"TAB(40)V
810 LPRINT "Range (yards):"TAB(40)R
820 LPRINT "Remaining velocity (fps):"TAB(40)INT(U+.49)
830 LPRINT "Remaining energy (ft-lbs):"TAB(40)INT (EN+.49)
840 LPRINT "Time of flight (sec):"TAB(40)INT(1000*T+.49)/1000
850 LPRINT "Total drop (inches):"TAB(40)INT(10*D+.49)/10
860 LPRINT "Max ht above line of sight (inches):"TAB(40)INT(10*HM+.49)/10
870 LPRINT "Elevation required (moa):"TAB(40)INT(10*E+.49)/10
880 LPRINT "Defl. 10 mph crosswind (inches):"TAB(40)INT(10*DF+.49)/10:LPRINT
890 REM
900 PRINT "What next?"
910 PRINT "1 = Bullet trajectory at other ranges with this zeroing range"
920 PRINT "2 = New muzzle velocity":PRINT "3 = New range":PRINT "4 = New cartridge":PRINT "5 = End program":PRINT
930 INPUT "Your choice, please";Q3
940 IF Q3=1 THEN CLS:GOTO 1000
950 IF Q3=2 THEN CLS:GOTO 240
960 IF Q3=3 THEN CLS:GOTO 650
970 IF Q3=4 THEN CLEAR:CLS:GOTO 50
980 IF Q3=5 THEN END
990 PRINT "Choice must be 1, 2, 3, 4, or 5":GOTO 930
1000 E1=E:R1=X/3
1010 INPUT "Maximum range for table (yards)";MR:MX=3*MR
1020 INPUT "Range increment (yards)";DR:DX=3*DR
1030 CLS:GOSUB 1280
1040 Q4=2:PRINT "Range";TAB(10)"Velocity";TAB(22)"Energy";TAB(32)"+/- sight";TAB(44)"+/- sight";TAB(56)"Wind defl";TAB(69)"Time flt"
1050 PRINT "yards";TAB(11)"fps";TAB(22)"ft-lbs";TAB(34)"moa";TAB(46)"inches";TAB(57)"inches";TAB(71)"sec":PRINT
1060 PRINT 0;TAB(10)V;TAB(22)INT(G*V^2/450400!+.49);TAB(34)" -";TAB(46)-H;TAB(58)0;TAB(70)0
1070 X=DX:R2=X/3:GOTO 370
1080 PRINT R2;TAB(10)INT(U+.49);TAB(22)INT(EN+.49);TAB(34)INT(10*(E1-E2)+.49)/10;TAB(46)INT(10*(E1-E2)*(R2/100)+.49)/10;TAB(58)INT(10*DF+.49)/10;TAB(70)INT(1000*T+.49)/1000
1090 IF X>=MX THEN 1110
1100 X=X+DX:R2=X/3:GOTO 370
1110 Q4=0:PRINT
1120 INPUT "Do you want hard copy (y or n)";I$:IF I$="n" OR I$="N" THEN 1230
1130 GOSUB 1250
1140 LPRINT "Range";TAB(10)"Velocity";TAB(22)"Energy";TAB(32)"+/- sight";TAB(44)"+/- sight";TAB(56)"Wind defl";TAB(69)"Time flt"
1150 REM
1160 LPRINT "yards";TAB(11)"fps";TAB(22)"ft-lbs";TAB(34)"moa";TAB(46)"inches";TAB(57)"inches";TAB(71)"sec":LPRINT
1170 LPRINT 0;TAB(10)V;TAB(22)INT(G*V^2/450400!+.49);TAB(34)" -";TAB(46)-H;TAB(58)0;TAB(70)0
1180 X=DX:R2=X/3:GOTO 370
1190 LPRINT R2;TAB(10)INT(U+.49);TAB(22)INT(EN+.49);TAB(34)INT(10*(E1-E2)+.49)/10;TAB(46)INT(10*(E1-E2)*(R2/100)+.49)/10;TAB(58)INT(10*DF+.49)/10;TAB(70)INT(1000*T+.49)/1000
1200 IF X>=MX THEN 1220
1210 X=X+DX:R2=X/3:GOTO 370
1220 LPRINT
1230 INPUT "Want to continue (y or n)";I$:IF I$ = "y" OR I$="Y" THEN CLEAR:CLS:GOTO 50
1240 STOP
1250 LPRINT:LPRINT:LPRINT"Cartridge:"TAB(34)C$:LPRINT "Bullet weight (gr):";TAB(33)G:LPRINT "Standard ballistic coefficient:";TAB(33)C1:LPRINT"Ht of sight above bore (inches):";TAB(33)H
1260 LPRINT "Gun altitude (ft):";TAB(33)AL:LPRINT "Temperature (deg F):";TAB(33)TF:LPRINT
1270 RETURN
1280 CLS:PRINT"Cartridge:"TAB(34)C$:PRINT "Bullet weight (gr):"TAB(33)G:PRINT"Standard ballistic coefficient:"TAB(33)C1:PRINT"Ht of sight above bore (inches):"TAB(33)H:PRINT"Gun altitude (ft):"TAB(33)AL:PRINT "Temperature (deg F):"TAB(33)TF:PRINT
1290 RETURN
1300 DATA 400,500,600,700,800,900,1000,1050,1075,1100,1110,1120,1130,1150,1250
1310 DATA 1500,2000,2500,3000,3500,4000,4500
1320 DATA 36664.2,31488.6,27124.6,23415.1,20325.5,17879.9,16095.6,15433.3
1330 DATA 15140.3,14894.3,14798.5,14706.2,14616.9,14447,13720.5,12330.3,10168.1
1340 DATA 8332.83,6699.05,5245.45,3958.11,2812.29
1350 DATA 350,39663,-63.768,.0758391,49.669,-.1845,4.82396e-4
1360 DATA 450,33958.1,-51.756,.0473157,35.269,-.115879,2.34824e-4
1370 DATA 550,29218.7,-43.64,.035161,25.7322,-.079629,1.36695e-4
1380 DATA 650,25192,-37.095,.0311391,18.9904,-.057305,9.20586e-5
1390 DATA 750,21792,-30.896,.0313196,14.1144,-.041349,6.9381e-5
1400 DATA 850,19020.1,-24.4588,.0330303,10.6366,-.0288527,5.58719e-5
1410 DATA 950,16906.5,-17.8388,.0325134,8.27886,-.01884,4.41677e-5
1420 DATA 1025,15747.2,-13.2423,.0276581,7.10211,-.0129298,3.32035e-5
1430 DATA 1062.5,15288.1,-11.3183,.023346,6.66207,-.0106524,2.68757e-5
1440 DATA 1087.5,15019.2,-10.2383,.0199585,6.41183,-9.41688e-3,2.2611e-5
1450 DATA 1105,14846,-9.58136,.0164795,6.25378,-8.66849e-3,2.0396e-5
1460 DATA 1115,14751.9,-9.23136,.0165939,6.16907,-8.28369e-3,1.83284e-5
1470 DATA 1125,14661.2,-8.93002,.0147629,6.08802,-7.93184e-3,1.70991e-5
1480 DATA 1140,14530.6,-8.482,.0116909,5.97274,-7.45342e-3,1.50953e-5
1490 DATA 1200,14062.5,-7.2568,8.50001e-3,5.57228,-6.058e-3,9.6174e-6
1500 DATA 1375,12977.5,-5.5464,3.06207e-3,4.72557,-4.05656e-3,3.72586e-6
1510 DATA 1750,11189.1,-4.31589,9.60342e-4,3.56969,-2.49074e-3,1.27366e-6
1520 DATA 2250,9222.06,-3.66916,4.5401e-4,2.57801,-1.63915e-3,5.68494e-7
1530 DATA 2750,7492.73,-3.26733,3.71407e-4,1.88267,-1.1924e-3,3.52828e-7
1540 DATA 3250,5950.45,-2.90704,3.48885e-4,1.36656,-8.97071e-4,2.45908e-7
1550 DATA 3750,4582.38,-2.57414,3.10524e-4,.974457,-6.88003e-4,1.74925e-7
1560 DATA 4250,3369.09,-2.29123,2.57709e-4,.670381,-5.40083e-4,1.24357e-7